
Перем юТест;
Перем СчетчикВызовов;
Перем ПараметрыВызова;

Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
	
	юТест = ЮнитТестирование;
	
	ВсеТесты = Новый Массив;
	
	ВсеТесты.Добавить("ТестДолжен_ПроверитьПодпискуНаСобытие");
	ВсеТесты.Добавить("ТестДолжен_ПроверитьОтпискуОтСобытия");
	
	Возврат ВсеТесты;

КонецФункции

Процедура ПередЗапускомТеста() Экспорт
	СчетчикВызовов = 0;
	ПараметрыВызова = Неопределено;
КонецПроцедуры

Процедура СгенерироватьСобытие(Знач ИмяСобытия, Знач Параметры) Экспорт
	ВызватьСобытие(ИмяСобытия, Параметры);
КонецПроцедуры

Процедура ОбработчикСобытия(Параметр1, Параметр2)
	
	СчетчикВызовов = СчетчикВызовов + 1;
	ПараметрыВызова = Новый Структура("Параметр1, Параметр2", Параметр1, Параметр2);

КонецПроцедуры

Процедура ТестДолжен_ПроверитьПодпискуНаСобытие() Экспорт
	
	МассивПараметров = Новый Массив;
	МассивПараметров.Добавить("П1");
	МассивПараметров.Добавить("П2");

	Источник = Новый ТестСобытий;
	Источник.СгенерироватьСобытие("МоеСобытие", МассивПараметров);
	
	юТест.Проверитьравенство(0, СчетчикВызовов);
	ДобавитьОбработчик Источник.МоеСобытие, ЭтотОбъект.ОбработчикСобытия;

	Источник.СгенерироватьСобытие("МоеСобытие", МассивПараметров);
	юТест.Проверитьравенство(1, СчетчикВызовов);
	юТест.ПроверитьРавенство("П1", ПараметрыВызова.Параметр1);
	юТест.ПроверитьРавенство("П2", ПараметрыВызова.Параметр2);

КонецПроцедуры

Процедура ТестДолжен_ПроверитьОтпискуОтСобытия() Экспорт
	
	Источник = Новый ТестСобытий;

	ДобавитьОбработчик Источник.МоеСобытие, ЭтотОбъект.ОбработчикСобытия;

	МассивПараметров = Новый Массив;
	МассивПараметров.Добавить("П1");
	МассивПараметров.Добавить("П2");

	Источник.СгенерироватьСобытие("МоеСобытие", МассивПараметров);
	юТест.ПроверитьРавенство(1, СчетчикВызовов);

	УдалитьОбработчик Источник.МоеСобытие, ЭтотОбъект.ОбработчикСобытия;

	СчетчикВызовов = 0;
	Источник.СгенерироватьСобытие("МоеСобытие", МассивПараметров);
	юТест.ПроверитьРавенство(0, СчетчикВызовов);

КонецПроцедуры

ПодключитьСценарий(ТекущийСценарий().Источник, "ТестСобытий");